package pfc;

import rice.p2p.commonapi.NodeHandle;
import easypastry.cast.CastContent;
import easypastry.cast.CastListener;

import pfc.Constantes;
import pfc.Aplicacion;
import pfc.Conversacion;
import pfc.mensaje.*;


/**
 * SubClase de CastListener y que implementa los métodos de esta última para poder recibir mensajes y notificaciones de conexión y desconexión de usuarios al anillo.
 * @author Gabriel Reus Rodríguez
 * @version 1.0, 06/11/2010
 */

public class Listener implements CastListener {

	private Aplicacion aplicacion= null;

	public Listener(Aplicacion a)
	{
		aplicacion=a;
	}

	@Override

	/**
	 * Recepción mensajes Con AnyCast
	 */
	public boolean contentAnycasting(CastContent content) {
		//System.out.println("Anycasting : "+content);
		return true;
	}

	@Override
	/**
	 * Recepción de mensajes.
	 */
	public void contentDelivery(CastContent content) {
		//System.out.println("Entrega : "+content);
		//Le paso la responsabilidad a la aplicacion.
		aplicacion.recibirMensaje((Mensaje)content);
	}

	@Override
	/**
	 * Recepciṕon de las notificaciones de conexión y desconexión de los usuarios al anillo.
	 */
	public void hostUpdate(NodeHandle nh, boolean joined) {
/*
		if (joined) System.out.println("Se unió un nodo : "+nh);
		else System.out.println("Nos abandona un nodo : "+nh);
*/
		aplicacion.userUpdate(joined,nh);
	}

}
